From 8eb71472c81dc49cee728f9d77219233d58312f4 Mon Sep 17 00:00:00 2001 From: "djm@kirby.fc.hp.com" Date: Wed, 9 Nov 2005 14:11:31 -0600 Subject: [PATCH] Don't panic for (rare) dom0 physaddr with uncacheable attribute --- xen/arch/ia64/xen/vcpu.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/xen/arch/ia64/xen/vcpu.c b/xen/arch/ia64/xen/vcpu.c index 69fa08447d..4e80bc16a1 100644 --- a/xen/arch/ia64/xen/vcpu.c +++ b/xen/arch/ia64/xen/vcpu.c @@ -1296,9 +1296,12 @@ IA64FAULT vcpu_translate(VCPU *vcpu, UINT64 address, BOOLEAN is_data, UINT64 *pt TR_ENTRY *trp; if (PSCB(vcpu,metaphysical_mode)) { - if (address >> 61) // FIXME: need more precise check here + unsigned long region = address >> 61; + // dom0 may generate an uncacheable physical address (msb=1) + if (region && ((region != 4) || (vcpu->domain != dom0))) { panic_domain(vcpu_regs(vcpu), - "vcpu_translate: bad physical address\n"); + "vcpu_translate: bad physical address: %p\n",address); + } *pteval = (address & _PAGE_PPN_MASK) | __DIRTY_BITS | _PAGE_PL_2 | _PAGE_AR_RWX; *itir = PAGE_SHIFT << 2; phys_translate_count++; -- 2.30.2